﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _16_State
{
    class Program
    {
        /*
         状态模式(state)：当一个对象的内在状态改变时允许改变其行为，这个对象看起来像是改变了其类。

            状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。吧状态的判断
            逻辑转移到表示不用状态的一系列类中，可以吧复杂的判断逻辑简化
             */
        static void Main(string[] args)
        {
            Worker project = new Worker();
            project.Hour = 9;
            project.WriteProgram();

            project.Hour = 10;
            project.WriteProgram();

            project.Hour = 12;
            project.WriteProgram();

            project.Hour = 13;
            project.WriteProgram();
            project.Hour = 14;
            project.WriteProgram();
            project.Hour = 17;

            project.TaskFinished = true;

            project.WriteProgram();
            project.Hour = 19;
            project.WriteProgram();
            project.Hour = 22;
            project.WriteProgram();

            Console.Read();
        }
    }
}
